#*-coding:Utf-8 -*
#!/usr/bin/python2.7

from Classes.matrice import *
from random import *
from Classes.decorateur import *
from Classes.goppa import *


print('demonstration de grosses matrices a coefficients dans le corps de Galois')
P=[]
n=64
for i in xrange(n**2):
	a=randint(0,7)
	P.append(elt(a,13))
P=matrice(n,n,P)
print P
print
Q=P.inverse()
#print Q
print 
print P*Q
print

print("demonstration de passage d'une matrice de parite a une matrice generatrice")
tableau = []
	#prenons modulo = 2 c est a dire du binaire
n=64
m=32
tableau = []
for i in xrange(n*m):
	a=randint(0,1)
	tableau.append(elt(a,2))
H = matrice(m,n,tableau)
#H = matrice(2,3,[0,1,0,0,0,1])
G=generatrice(H)
D=decodage(G)
O = H*G
I  = D*G
print G
print
print O
print 
print I
print

print("Demonstration de comment rendre une matrice inversible dans Z/2Z")
T=[]
n=32
for i in xrange(n**2):
	a=randint(0,1)
	T.append(elt(a))
T=matrice(n,n,T)
print T
print
print T.inverse()
print
N=T.RendInversible()
print
print "modif"
print N
print
print N*N.inverse()
